<?php
namespace app\home\controller;
use phpmailer\phpmailer;
use think\captcha\Captcha;
use think\Controller;
use think\Db;
use think\Request;

class Forget extends Controller
{
    public function index(){//跳转到forget页面
        return view("forget");
    }

    public function intermediary()
    {
        return view("Forget/intermediary");
    }

    public function forget_a(){
        //根据forget页面查找数据库里的值；
        if (Request::instance()->isPost()) {
            if (Db::table('user')->where('mobile', $_POST['number'])->find()) {
                $rand = "";
                for ($i = 1; $i <= 4; $i++) {//随机生成验证码;
                    $rand .= rand(0, 9);
                }
                setcookie("yzm", $rand);
                echo json_encode($rand);
            } else {
                echo json_encode('true');
            }
        }
    }

    public function forget(){
        //根据手机验证码的操作过后将密码传到邮箱里面
        $data = $_POST["number"];
        $data1 = $_POST["number_d"];
        if ($_COOKIE["yzm"] == $data1) {
            $dsg = Db::table('user')->where("mobile", $data)->find();//根据页面上的电话号码，传值.
//            dump($dsg);
            DB::startTrans();
            $str=$data."online";
            if (Db::table('user')->where("mobile", $data)->update(["password"=>md5($str)])) {
              if(  $this->email($dsg["email"],"你的密码是 ".$str."")){
                  Db::commit();
                  $this->success("密码已在路上  请注意查收；",url('Index/login'),0,3);//成功过后跳到登录页面
              }else{
                  $this->error("找回失败",url('Forget/index'),0,3);
              }

        }
    }
    }
    public function email($email,$content){
        $mail = new PHPMailer();
        $toemail =$email;//定义收件人的邮箱
        $mail->isSMTP();// 使用SMTP服务
        $mail->CharSet = "utf8";// 编码格式为utf8，不设置编码的话，中文会出现乱码
        $mail->Host = "smtp.163.com";// 发送方的SMTP服务器地址
        $mail->SMTPAuth = true;// 是否使用身份验证
        $mail->Username = "13689650044@163.com";//发送方的163邮箱用户名，就是你申请163的SMTP服务使用的163邮箱</span><span style="color:#333333;">
        $mail->Password = "19981020feng";// 发送方的邮箱密码，注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码！</span><span style="color:#333333;">
        $mail->SMTPSecure = "ssl";//<span><span style="color:#ff6666;">// 使用ssl协议方式</span><span style="color:#333333;">
        $mail->Port = 994;// 163邮箱的ssl协议方式端口号是465/994

        $mail->setFrom("13689650044@163.com", "Mailer");// 设置发件人信息，如邮件格式说明中的发件人，这里会显示为Mailer(xxxx@163.com），Mailer是当做名字显示
        $mail->addAddress($toemail, 'Wang');// 设置收件人信息，如邮件格式说明中的收件人，这里会显示为Liang(yyyy@163.com)
        $mail->addReplyTo("13689650044@163.com", "Reply");// 设置回复人信息，指的是收件人收到邮件后，如果要回复，回复邮件将发送到的邮箱地址
        //$mail->addCC("xxx@163.com");// 设置邮件抄送人，可以只写地址，上述的设置也可以只写地址(这个人也能收到邮件)
        //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
        //$mail->addAttachment("bug0.jpg");// 添加附件
        $mail->Subject = "这是一个测试邮件";// 邮件标题
        $mail->Body = $content;// 邮件正文
        //$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容，如果不支持Html方式，就会用到这个，基本无用
        if (!$mail->send()) {// 发送邮件
//            echo "Message could not be sent.";
//            echo "Mailer Error: " . $mail->ErrorInfo;// 输出错误信息
            return false;
        } else {
            return true;
        }
    }
}